home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / Adobe Media Player 1.6 / adobe_media_player.air / AMP.swf / scripts / mx / managers / BrowserManagerImpl.as < prev    next >
Encoding:
Text File  |  2008-11-25  |  6.4 KB  |  225 lines

  1. package mx.managers
  2. {
  3.    import flash.display.Stage;
  4.    import flash.events.Event;
  5.    import flash.events.EventDispatcher;
  6.    import flash.external.ExternalInterface;
  7.    import mx.core.ApplicationGlobals;
  8.    import mx.core.mx_internal;
  9.    import mx.events.BrowserChangeEvent;
  10.    
  11.    use namespace mx_internal;
  12.    
  13.    public class BrowserManagerImpl extends EventDispatcher implements IBrowserManager
  14.    {
  15.       private static var instance:IBrowserManager;
  16.       
  17.       mx_internal static const VERSION:String = "3.2.0.3958";
  18.       
  19.       private var _defaultFragment:String = "";
  20.       
  21.       private var _title:String;
  22.       
  23.       private var browserMode:Boolean = true;
  24.       
  25.       private var _fragment:String;
  26.       
  27.       private var _url:String;
  28.       
  29.       private var _base:String;
  30.       
  31.       public function BrowserManagerImpl()
  32.       {
  33.          var systemManager:Object;
  34.          var sandboxRoot:Object = null;
  35.          var parent:Object = null;
  36.          super();
  37.          systemManager = SystemManagerGlobals.topLevelSystemManagers;
  38.          if(systemManager)
  39.          {
  40.             systemManager = systemManager[0];
  41.          }
  42.          if(systemManager)
  43.          {
  44.             sandboxRoot = systemManager.getSandboxRoot();
  45.             if(!sandboxRoot.dispatchEvent(new Event("mx.managers::BrowserManager",false,true)))
  46.             {
  47.                browserMode = false;
  48.                return;
  49.             }
  50.             try
  51.             {
  52.                parent = sandboxRoot.parent;
  53.                while(parent)
  54.                {
  55.                   if(sandboxRoot.parent is Stage)
  56.                   {
  57.                      break;
  58.                   }
  59.                   parent = parent.parent;
  60.                }
  61.             }
  62.             catch(e:Error)
  63.             {
  64.                browserMode = false;
  65.                return;
  66.             }
  67.             sandboxRoot.addEventListener("mx.managers::BrowserManager",sandboxBrowserManagerHandler,false,0,true);
  68.          }
  69.          try
  70.          {
  71.             ExternalInterface.addCallback("browserURLChange",browserURLChangeBrowser);
  72.             ExternalInterface.addCallback("debugTrace",debugTrace);
  73.          }
  74.          catch(e:Error)
  75.          {
  76.             browserMode = false;
  77.          }
  78.       }
  79.       
  80.       public static function getInstance() : IBrowserManager
  81.       {
  82.          if(!instance)
  83.          {
  84.             instance = new BrowserManagerImpl();
  85.          }
  86.          return instance;
  87.       }
  88.       
  89.       private function setup(param1:String, param2:String) : void
  90.       {
  91.          if(!browserMode)
  92.          {
  93.             return;
  94.          }
  95.          _defaultFragment = param1;
  96.          _url = ExternalInterface.call("BrowserHistory.getURL");
  97.          if(!_url)
  98.          {
  99.             browserMode = false;
  100.             return;
  101.          }
  102.          var _loc3_:int = int(_url.indexOf("#"));
  103.          if(_loc3_ == -1 || _loc3_ == _url.length - 1)
  104.          {
  105.             _base = _url;
  106.             _fragment = "";
  107.             _title = param2;
  108.             ExternalInterface.call("BrowserHistory.setDefaultURL",param1);
  109.             setTitle(param2);
  110.          }
  111.          else
  112.          {
  113.             _base = _url.substring(0,_loc3_);
  114.             _fragment = _url.substring(_loc3_ + 1);
  115.             _title = ExternalInterface.call("BrowserHistory.getTitle");
  116.             ExternalInterface.call("BrowserHistory.setDefaultURL",_fragment);
  117.             if(_fragment != _defaultFragment)
  118.             {
  119.                browserURLChange(_fragment,true);
  120.             }
  121.          }
  122.       }
  123.       
  124.       private function browserURLChange(param1:String, param2:Boolean = false) : void
  125.       {
  126.          var _loc3_:String = null;
  127.          if(decodeURI(_fragment) != decodeURI(param1) || param2)
  128.          {
  129.             _fragment = param1;
  130.             _loc3_ = url;
  131.             _url = _base + "#" + param1;
  132.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.BROWSER_URL_CHANGE,false,false,url,_loc3_));
  133.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.URL_CHANGE,false,false,url,_loc3_));
  134.          }
  135.       }
  136.       
  137.       [Bindable("urlChange")]
  138.       public function get base() : String
  139.       {
  140.          return _base;
  141.       }
  142.       
  143.       public function setFragment(param1:String) : void
  144.       {
  145.          if(!browserMode)
  146.          {
  147.             return;
  148.          }
  149.          var _loc2_:String = _url;
  150.          var _loc3_:String = _fragment;
  151.          _url = base + "#" + param1;
  152.          _fragment = param1;
  153.          if(dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.APPLICATION_URL_CHANGE,false,true,_url,_loc2_)))
  154.          {
  155.             ExternalInterface.call("BrowserHistory.setBrowserURL",param1,ExternalInterface.objectID);
  156.             dispatchEvent(new BrowserChangeEvent(BrowserChangeEvent.URL_CHANGE,false,false,_url,_loc2_));
  157.          }
  158.          else
  159.          {
  160.             _fragment = _loc3_;
  161.             _url = _loc2_;
  162.          }
  163.       }
  164.       
  165.       private function debugTrace(param1:String) : void
  166.       {
  167.          trace(param1);
  168.       }
  169.       
  170.       [Bindable("urlChange")]
  171.       public function get fragment() : String
  172.       {
  173.          if(Boolean(_fragment) && Boolean(_fragment.length))
  174.          {
  175.             return _fragment;
  176.          }
  177.          return _defaultFragment;
  178.       }
  179.       
  180.       [Bindable("urlChange")]
  181.       public function get title() : String
  182.       {
  183.          return _title;
  184.       }
  185.       
  186.       public function setTitle(param1:String) : void
  187.       {
  188.          if(!browserMode)
  189.          {
  190.             return;
  191.          }
  192.          ExternalInterface.call("BrowserHistory.setTitle",param1);
  193.          _title = ExternalInterface.call("BrowserHistory.getTitle");
  194.       }
  195.       
  196.       public function init(param1:String = "", param2:String = "") : void
  197.       {
  198.          ApplicationGlobals.application.historyManagementEnabled = false;
  199.          setup(param1,param2);
  200.       }
  201.       
  202.       private function sandboxBrowserManagerHandler(param1:Event) : void
  203.       {
  204.          param1.preventDefault();
  205.       }
  206.       
  207.       private function browserURLChangeBrowser(param1:String) : void
  208.       {
  209.          browserURLChange(param1,false);
  210.       }
  211.       
  212.       public function initForHistoryManager() : void
  213.       {
  214.          setup("","");
  215.       }
  216.       
  217.       [Bindable("urlChange")]
  218.       public function get url() : String
  219.       {
  220.          return _url;
  221.       }
  222.    }
  223. }
  224.  
  225.